#include "D3DEngine.h"

D3DEngineState* g_pD3DEngineState = NULL ;


///////////////////////////////////////////////////////////////////////////////////////////////////


HRESULT D3DEngineCreateState( ) {

    if( g_pD3DEngineState == NULL ) {
        g_pD3DEngineState = new D3DEngineState ;
        if( g_pD3DEngineState == NULL ) 
            return -1 ;
    }
    return S_OK ;
}


///////////////////////////////////////////////////////////////////////////////////////////////////


void D3DEngineDestroyState( ) {

    SafeDelete( g_pD3DEngineState ) ;
}


///////////////////////////////////////////////////////////////////////////////////////////////////


class D3DEngineStateHelper {
public :
    D3DEngineStateHelper( ) {
        D3DEngineCreateState( ) ;
    }

    ~D3DEngineStateHelper( ) {
        D3DEngineDestroyState( ) ;
    }
};


///////////////////////////////////////////////////////////////////////////////////////////////////


D3DEngineState& GetD3DEngineState( ) {

    static D3DEngineStateHelper memory ;

    return *g_pD3DEngineState ;
}